package com.geek.boot.config;

import com.geek.boot.entity.Car;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.web.multipart.MultipartResolver;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

/**
 * @author chenmin
 * @desc TODO
 * @date 2025/7/14
 *
 * 如何配置绑定？
 *
 * 方式一：
 * 类上， @PropertySource("classpath:db.properties") 指定读取哪一个配置文件
 * 方法上形参列表中，@Value("${key}") 指定读取配置文件中的哪一个键值
 * 使用场景：SpringMVC中
 *
 * 方式二：
 * 注解 @Component("c2") ，将当前实例注册至IOC容器中
 * 注解 @ConfigurationProperties(prefix = "car") 通过指定的prefix，在application.properties文件中，通过prefix.属性名=值
 * 使用场景：自定义的工具包中，例如SMSUtils、OSSUtils等等
 *
 * 方式三：
 * 配置类中，注解@EnableConfigurationProperties(Car.class) 开启配置绑定
 * 实体类中，注解 @ConfigurationProperties(prefix = "car") 通过指定的prefix，在application.properties文件中，通过prefix.属性名=值
 * 使用场景：底层源代码，自定义starter场景启动器中
 *
 * SpringBoot定制化思路之二
 */
@EnableConfigurationProperties(Car.class)

public class MyConfig4 {
    //替换底层组件
    @Bean
    public MultipartResolver resolver(){
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
        multipartResolver.setDefaultEncoding("UTF-8");
        multipartResolver.setMaxUploadSize(5*1024*1024);
        multipartResolver.setSupportedMethods("POST", "PUT");
        return multipartResolver;
    }

}
